home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / comm1 / exclutls.lha / Callers / Callers.s < prev   
Text File  |  1996-01-28  |  17KB  |  741 lines

  1. ;Released as public domain 27-Jan-1996 by the author Renze de Ruiter
  2.  
  3. **********************************************************
  4. *                                                        *
  5. * Callers.s ver 3.01 by Renze de Ruiter/Eclipse Software *
  6. *                                                        *
  7. *         Copyright (c) 1994 All Rights Reserved         *
  8. *                                                        *
  9. *                                                        *
  10. * Dave's comment: I did a lot of fixes, and I hate this  *
  11. *                 this program now!!                     *
  12. **********************************************************
  13.  
  14.     Section    Callers,CODE
  15.     opt    C+,D-
  16.  
  17.     include    mysystem.gs
  18.     include    dos/rdargs.i
  19.     Include    excel/excel.i
  20.  
  21. *******************************************************************************
  22. Start:    Move.L    $4.w,A6
  23.     Move.L    A6,_EXECBase
  24.  
  25.     lea    _DOSName,A1
  26.     moveq    #37,D0
  27.     CALL    OpenLibrary
  28.     move.l    D0,_DOSBase
  29.     beq    no37
  30.  
  31. ********************************
  32.     Lea    _CustomRDArgs,A0
  33.     Move.L    #_ExtHelp,RDA_ExtHelp(A0)    ;pointer to extended help text
  34.     Move.L    A0,D3        ;my custom RDArgs structure
  35.  
  36.     Move.L    #_Template,D1
  37.     Move.L    #_MyArgs,D2
  38.     CALLDOS    ReadArgs
  39.     Move.L    D0,_RdArgs
  40.     Beq    noargs
  41.  
  42. ********************************
  43.     Bsr    Readkey
  44.  
  45.     Tst.B    _KeyOK
  46.     Beq.S    .reg_ok
  47.     Move.L    #_Unregmsg,D1
  48.     CALL    PutStr        ;faster than VPrintf
  49.     Move.L    #250,D1
  50.     CALL    Delay
  51. .reg_ok
  52. ********************************
  53.     Move.L    #10,_MaxEntries        ;default number of lines
  54.     Tst.B    _KeyOK        ;keyfile protection
  55.     Bne.S    .maxok        ;keyfile protection
  56.  
  57.     Move.L    _Max,A0
  58.     Cmp.L    #0,A0
  59.     Beq.S    .maxok
  60.     Cmp.L    #0,(A0)
  61.     Beq.S    .maxok
  62.     Move.L    (A0),_MaxEntries
  63. .maxok
  64. ********************************
  65.     move.l    #_Logotable,D2
  66.     move.l    #_ANSILogo,D1
  67.     tst.l    _Noansi
  68.     beq.S    .drawlogo
  69.     move.l    #_ASCIILogo,D1
  70. .drawlogo    CALLDOS    VPrintf
  71.  
  72. ********************************
  73.     Move.L    _LogFile,D2
  74.     Bne.S    .lnameprovided
  75.  
  76.     Move.L    #_SDName,D1
  77.     Move.L    #MODE_OLDFILE,D2
  78.     CALL    Open
  79.     Move.L    D0,D5
  80.     Beq    noargs
  81.  
  82.     Move.L    D0,D1
  83.     Move.L    #_SystemData,D2
  84.     Move.L    #exsd_SIZE,D3
  85.     CALL    Read
  86.  
  87.     Move.L    D5,D1
  88.     CALL    Close
  89.  
  90.     Move.L    #_FileName,D1
  91.     Move.L    #_SystemData+exsd_Path+128,D2
  92.     Move.L    #130,D3
  93.     CALL    AddPart
  94.  
  95.     Move.L    #_Logname,D2
  96. .lnameprovided    Move.L    #_FileName,D1
  97.     Move.L    #130,D3
  98.     CALL    AddPart
  99.  
  100.     move.l    #_FileName,D1
  101.     move.l    #MODE_OLDFILE,D2
  102.     CALL    Open
  103.     move.l    D0,_File
  104.     beq    noargs
  105.  
  106.     move.l    D0,D1
  107.     moveq    #0,D2
  108.     moveq    #OFFSET_END,D3
  109.     CALL    Seek
  110.     cmp.l    #-1,D0
  111.     beq    badlogfile
  112.  
  113.     move.l    _File,D1
  114.     moveq    #0,D2
  115.     moveq    #OFFSET_BEGINNING,D3
  116.     CALL    Seek
  117.     addq    #1,D0
  118.     move.l    D0,_Length
  119.  
  120.     Addq    #2,D0        ;prevent memmunging
  121.     move.l    #MEMF_ANY|MEMF_CLEAR,D1
  122.     CALLEXEC    AllocMem
  123.     move.l    D0,_Memptr
  124.     beq    badlogfile
  125.     Addq.L    #2,_Memptr
  126.  
  127.     move.l    _File,D1
  128.     move.l    _Memptr,D2
  129.     move.l    _Length,D3
  130.     CALLDOS    Read
  131.  
  132. *******************************************************************************
  133.     move.l    _Memptr,A1
  134.     Moveq    #0,D2
  135. .countloop    lea    _Separator,A0
  136.     bsr    FindData
  137.     tst.l    D0
  138.     bne.s    .countdone
  139.     Addq    #1,D2
  140.     Bra.s    .countloop
  141. .countdone    move.L    D2,_LogEntries
  142.  
  143.     tst.l    D2
  144.     beq    Notablemem
  145.  
  146. ********************************
  147.     Move.l    _LogEntries,D0
  148.     lsl    #2,D0
  149.     move.l    D0,D2
  150.     Addq    #4,D0
  151.     move.l    #MEMF_ANY|MEMF_CLEAR,D1
  152.     CALLEXEC    AllocMem
  153.     move.l    D0,_Offsets
  154.     beq    Notablemem
  155.     Add.L    D0,D2
  156.     Move.L    D2,_Endoftable
  157.  
  158. ********************************
  159.     move.l    _Memptr,A1
  160.     Move.L    _Offsets,A2
  161.     Move.L    _LogEntries,D3
  162.     subq    #2,D3
  163.  
  164. tableloop:    lea    _Separator,A0
  165.     bsr    FindData
  166.     tst.l    D0
  167.     bne.s    tabledone
  168.  
  169.     lea    4(A2),A3
  170.     move.l    A2,A4
  171.     Move.L    D3,D0
  172. .shiftloop    move.l    (A3)+,(A4)+
  173.     dbra    D0,.shiftloop
  174.  
  175.     move.l    A0,(A4)
  176.     move.b    #0,-1(A0)
  177.     bra.s    tableloop
  178.  
  179. tabledone:    Move.L    _LogEntries,D0
  180.     Move.L    D0,_Entries
  181.     Move.L    _MaxEntries,D1
  182.     Cmp.L    D0,D1
  183.     Bgt.S    .Okdo
  184.     Move.L    _MaxEntries,_Entries
  185. .Okdo
  186. ********************************
  187.     move.l    #_ANSITable,D1
  188.     tst.l    _Noansi
  189.     beq.s    .drawtable
  190.     move.l    #_ASCIITable,D1
  191. .drawtable    CALLDOS    PutStr        ;VPrintf replacement
  192.  
  193. ********************************
  194.     move.l    _User,A2
  195.     lea    _Strbuffer,A1
  196. .concatloop    move.l    (A2)+,A0
  197.     cmp.l    #0,A0
  198.     beq.s    .endconcat
  199. .copyloop    move.b    (A0)+,D0
  200.     beq.s    .copyloopdone
  201.     move.b    D0,(A1)+
  202.     bra.s    .copyloop
  203.  
  204. .copyloopdone    move.b    #' ',(A1)+
  205.     bra.s    .concatloop
  206.  
  207. .endconcat    move.b    #0,-1(A1)
  208.  
  209. *******************************************************************************
  210.     Tst.L    _Hidefile
  211.     Beq    .noHFile
  212.  
  213.     Move.L    _Hidefile,D1
  214.     move.l    #MODE_OLDFILE,D2
  215.     CALL    Open
  216.     move.l    D0,_HFile
  217.     beq    .noHFile
  218.  
  219.     move.l    D0,D1
  220.     moveq    #0,D2
  221.     moveq    #OFFSET_END,D3
  222.     CALL    Seek
  223.     cmp.l    #-1,D0
  224.     beq    .badHFile
  225.  
  226.     move.l    _HFile,D1
  227.     moveq    #0,D2
  228.     moveq    #OFFSET_BEGINNING,D3
  229.     CALL    Seek
  230.     addq    #1,D0
  231.     move.l    D0,_HFileSize
  232.  
  233.     Addq    #1,D0
  234.     move.l    #MEMF_ANY|MEMF_CLEAR,D1
  235.     CALLEXEC    AllocMem
  236.     move.l    D0,_HFileStart
  237.     beq.S    .badHFile
  238.  
  239.     move.l    _HFile,D1
  240.     move.l    _HFileStart,D2
  241.     move.l    _HFileSize,D3
  242.     CALLDOS    Read
  243.  
  244. .badHFile    Move.L    _HFile,D1
  245.     CALL    Close
  246. .noHFile        
  247. *******************************************************************************
  248.     move.l    _Endoftable,A5
  249.     move.L    _Entries,D6
  250.     subq    #1,D6
  251.  
  252. mainloop:    subq    #4,A5
  253.     Bsr    ClearData
  254.  
  255.     tst.L    (A5)
  256.     beq    closedown
  257.  
  258. ********************************
  259.     lea    FindAlias,A0
  260.     bsr    FindString
  261.     tst.l    D0
  262.     bne.s    mainloop
  263.  
  264.     moveq    #25,D1
  265.     lea    _Alias,A2
  266.  
  267. .aliasloop    move.b    (A1)+,D0
  268.     cmp.b    #'(',D0
  269.     beq.s    .aliasskip
  270.     cmp.b    #' ',D0
  271.     bne.s    .aliasspace
  272.     cmp.b    #' ',(A1)
  273.     beq.s    .aliasend
  274. .aliasspace    move.b    D0,(A2)+
  275.     dbra    D1,.aliasloop
  276. .aliasend    addq    #1,A2
  277. .aliasskip    subq    #1,A2
  278.     move.b    #0,(A2)
  279.  
  280.     Move.L    _Hide,A0
  281.     Tst.B    (A0)
  282.     Beq.S    .skiphide
  283.     Lea    _Alias,A1
  284.     Bsr    CompareStrings
  285.     Tst.L    D0
  286.     Beq.S    mainloop
  287. .skiphide
  288. ********************************
  289.     Move.L    _HideID,A0
  290.     Cmp.L    #0,A0
  291.     Beq.S    .noID
  292.     Move.L    (A0),D3
  293.  
  294.     lea    FindID,A0
  295.     bsr    FindString
  296.     tst.l    D0
  297.     bne.s    .noID
  298.  
  299.     move.l    A1,D1
  300.     move.l    #_UserID,D2
  301.     CALLDOS    StrToLong
  302.  
  303.     Move.L    _UserID,D4
  304.     Sub.L    D4,D3
  305.     Beq    mainloop
  306. .noID
  307.  
  308. ********************************
  309.     Move.L    _HFileStart,A1
  310.     Cmp.L    #0,A1
  311.     Beq.S    .noHFile
  312.  
  313.     Lea    _Alias,A2
  314.     Lea    _HideAliasBuf,A0
  315.     Move.L    A0,A3
  316.     Moveq    #26,D0
  317. .HFileloop    Move.B    (A2)+,D1
  318.     Cmp.B    #0,D1
  319.     Beq.S    .HFloopend
  320.     Move.B    D1,(A3)+
  321.     DBra    D0,.HFileloop
  322.  
  323. .HFloopend    Move.B    #10,(A3)+
  324.     Move.B    #0,(A3)+
  325.     Bsr    FindData
  326.     Tst.L    D0
  327.     Beq    mainloop
  328. .noHFile
  329. ********************************
  330.     lea    FindDate,A0
  331.     bsr    FindString
  332.     tst.l    D0
  333.     bne    mainloop
  334.     addq    #4,A1
  335.  
  336.     lea    _Calldate,A2
  337.     move.b    (A1)+,(A2)+
  338.     move.b    (A1)+,D0
  339.     cmp.b    #'-',D0
  340.     beq.s    .dateskip
  341.     move.b    D0,(A2)+
  342.     addq    #1,A1
  343. .dateskip    move.b    #' ',(A2)+
  344.     move.b    (A1)+,(A2)+
  345.     move.b    (A1)+,(A2)+
  346.     move.b    (A1)+,(A2)+
  347.     move.b    #0,(A2)
  348.  
  349. ********************************
  350.     addq    #6,A1
  351.     lea    _Calltime,A2
  352.     moveq    #6,D1
  353. .timeloop    move.b    (A1)+,D0
  354.     cmp.b    #'>',D0
  355.     beq.s    .timeskip
  356.     move.b    D0,(A2)+
  357.     dbra    D1,.timeloop
  358. .timeskip    move.b    #0,(A2)
  359.  
  360. ********************************
  361.     lea    FindBaud,A0
  362.     bsr    FindString
  363.     tst.l    D0
  364.     bne.s    .nobaud
  365.  
  366.     moveq    #4,D1
  367.     lea    _Baudrate,A2
  368.  
  369. .baudloop    move.b    (A1)+,D0
  370.     cmp.b    #' ',D0
  371.     beq.s    .baudskip
  372.     move.b    D0,(A2)+
  373.     dbra    D1,.baudloop
  374. .baudskip    move.b    #0,(A2)
  375.     bra.s    .notlocal
  376. .nobaud
  377. ********************************
  378.     lea    SysopLogin,A0
  379.     bsr    FindString
  380.     tst.l    D0
  381.     bne.s    .notsysop
  382.     tst.b    _KeyOK        ;keyfile protection
  383.     bne.s    .local_nokey        ;keyfile protection
  384.     tst.l    _Localoff
  385.     bne    mainloop
  386. .local_nokey    move.l    #LocalBaud,_Baud
  387.     bra.s    .notlocal
  388.  
  389. .notsysop    lea    LocalLogin,A0
  390.     bsr    FindString
  391.     tst.l    D0
  392.     bne.s    .notlocal
  393.     tst.b    _KeyOK        ;keyfile protection
  394.     bne.s    .local_nokey2        ;keyfile protection
  395.     tst.l    _Localoff
  396.     bne    mainloop
  397. .local_nokey2    move.l    #LocalBaud,_Baud
  398. .notlocal
  399. ********************************
  400.     lea    FindTimeon,A0
  401.     bsr    FindString
  402.     tst.l    D0
  403.     bne    mainloop
  404.  
  405. .timeonloop    move.b    -(A0),D0
  406.     cmp.b    #'(',D0
  407.     bne.s    .timeonloop
  408.     addq    #1,A0
  409.     move.l    A0,D1
  410.     move.l    #_Timeon,D2
  411.     CALLDOS    StrToLong
  412.  
  413. ********************************
  414.     Tst.L    _Timeonline
  415.     Beq.S    .onlineskip
  416.     Move.L    _Timeonline,A0
  417.     Move.L    (A0),D0
  418.     Move.L    _Timeon,D1
  419.     Sub.L    D1,D0
  420.     Bgt    mainloop
  421. .onlineskip
  422. ********************************
  423.     lea    FindDownload,A0
  424.     bsr    FindString
  425.     tst.l    D0
  426.     bne.s    .nodownload
  427.  
  428.     move.l    A1,D1
  429.     move.l    #_Downloads,D2
  430.     CALL    StrToLong
  431. .nodownload
  432. ********************************
  433.     lea    FindUpload,A0
  434.     bsr    FindString
  435.     tst.l    D0
  436.     bne.s    .noupload
  437.  
  438.     move.l    A1,D1
  439.     move.l    #_Uploads,D2
  440.     CALL    StrToLong
  441. .noupload
  442. ********************************
  443.     moveq    #0,D4
  444.     Move.L    (A5),A1
  445. .postloop    lea    FindPosts,A0
  446.     bsr    FindData
  447.     tst.l    D0
  448.     bne.s    .postdone
  449.     addq    #1,D4
  450.     bra.s    .postloop
  451. .postdone    move.l    D4,_Posts
  452.  
  453. *******************************************************************************
  454. display:
  455.     Move.L    _Timeon,D0
  456.     Add.L    D0,_TotalTime
  457.     Move.L    _Posts,D0
  458.     Add.L    D0,_TotalPosts
  459.     Move.L    _Uploads,D0
  460.     Add.L    D0,_TotalUpload
  461.     Move.L    _Downloads,D0
  462.     Add.L    D0,_TotalDownload
  463.  
  464.     lea    _Strbuffer,A0
  465.     Cmp.B    #0,(A0)
  466.     Beq.S    .nohilite
  467.     lea    _Alias,A1
  468.     bsr    CompareStrings
  469.     tst.l    D0
  470.     bne.s    .nohilite
  471.  
  472.     move.l    #_ANSIHLine,D1
  473.     tst.l    _Noansi
  474.     beq.s    .drawline
  475.     move.l    #_ASCIIHLine,D1
  476.     bra.s    .drawline
  477.  
  478. .nohilite    move.l    #_ANSILine,D1
  479.     tst.l    _Noansi
  480.     beq.s    .drawline
  481.     move.l    #_ASCIILine,D1
  482.  
  483. .drawline    move.l    #_Vartable,D2
  484.     CALLDOS    VPrintf
  485.  
  486. ********************************
  487.     Move.L    #SIGBREAKF_CTRL_C,D1    ;check to see if we got a break_c message
  488.     Moveq    #0,D0
  489.     CALLEXEC    SetSignal
  490.     Btst.L    #SIGBREAKB_CTRL_C,D0
  491.     Beq.S    .nobreak
  492.  
  493.     move.l    #Break,D1        ;say what we are doing
  494.     CALLDOS    PutStr        ;replacing VPrintf
  495.     Move.B    #-1,Break
  496.     Bra.s    closedown
  497. .nobreak
  498. ********************************
  499.     dbra    D6,mainloop
  500.  
  501. *******************************************************************************
  502. closedown:    Move.l    _LogEntries,D0
  503.     lsl    #2,D0
  504.     Addq    #4,D0
  505.     move.l    _Offsets,A1
  506.     CALLEXEC    FreeMem
  507.  
  508.     Move.L    _HFileSize,D0
  509.     Beq.S    .noHFile
  510.     Move.L    _HFileStart,A1
  511.     CALL    FreeMem
  512. .noHFile
  513. ********************************
  514. Notablemem:    Cmp.B    #-1,Break        ;don't draw bottom line if a break_c was received
  515.     Beq.S    .skiptail
  516.  
  517.     Tst.L    _Nototals
  518.     Beq.S    .noNT
  519.     move.l    #_ANSINTTail,D1
  520.     tst.l    _Noansi
  521.     beq.s    .drawtail
  522.     move.l    #_ASCIINTTail,D1
  523.     Bra.S    .drawtail
  524.  
  525. .noNT    Move.L    #_TotalTime,D2
  526.     move.l    #_ANSITail,D1
  527.     tst.l    _Noansi
  528.     beq.s    .drawtail
  529.     move.l    #_ASCIITail,D1
  530. .drawtail    CALLDOS    VPrintf        ;replacing VPrintf
  531. .skiptail
  532. ********************************
  533.     move.l    _Memptr,A1
  534.     Subq.L    #2,A1        ;prevent memmunging
  535.     move.l    _Length,D0
  536.     Addq    #2,D0        ;get correct length
  537.     CALLEXEC    FreeMem
  538.  
  539. ********************************
  540. badlogfile:    move.l    _File,D1
  541.     CALLDOS    Close
  542.  
  543. noargs:    move.l    _RdArgs,D1
  544.     CALL    FreeArgs
  545.  
  546. ********************************
  547.     move.l    _DOSBase,A1
  548.     CALLEXEC    CloseLibrary
  549.  
  550. no37:    moveq    #0,D0
  551.     rts
  552.  
  553. *******************************************************************************
  554. ClearData:    Move.B    #0,_Calldate
  555.     Move.B    #0,_Calltime
  556.     Move.B    #0,_Alias
  557.     Move.B    #0,_Baudrate
  558.     Move.B    #0,_HideAliasBuf
  559.     Move.L    #_Baudrate,_Baud
  560.     Move.L    #0,_Timeon
  561.     Move.L    #0,_Posts
  562.     Move.L    #0,_Uploads
  563.     Move.L    #0,_Downloads
  564.     Rts
  565.  
  566. *******************************************************************************
  567. FindString:    move.L    (a5),A1
  568.     include    routines/finddata.s
  569.  
  570.     include    routines/comparestrings.s
  571.     include    routines/changecase.s
  572.  
  573.     include    routines/keycode.s
  574.  
  575. *******************************************************************************
  576.     Section    CallersData,DATA
  577.  
  578. _DOSName:    DOSNAME
  579. _Version:    dc.b    '$VER: Callers 3.01 (10.8.94) (c)1994 Renze de Ruiter/Eclipse Software',0
  580.  
  581. _Keyname:    dc.b    'L:Callers.key',0
  582.  
  583. _SDName:    dc.b    'SystemData',0
  584. _Logname:    dc.b    'Logs/'
  585. _IDLabel:    dc.b    'Callers',0
  586.  
  587. _ExtHelp:    Dc.B    10
  588.     Dc.B    'LOGFILE    - Filename of log file to view',10
  589.     Dc.B    'HIDE       - Name of a user to hide from the calls list',10
  590.     Dc.B    'HIDEID     - ID number of user to hide from the calls list',10
  591.     Dc.B    'HIDEFILE   - Pointer to a filename of users to be hidden during listing',10
  592.     Dc.B    'MAX        - Maximum number of entries to be displayed',10
  593.     Dc.B    'TIMEONLINE - Only list users online for more than x minutes',10
  594.     Dc.B    'LOCALOFF   - Hide LOCAL calls',10
  595.     Dc.B    'NOANSI     - Use ASCII display, with no ANSI colours',10
  596.     Dc.B    'NOTOTALS   - Don''t print the totals at the bottom of the list',10
  597.     Dc.B    'USER       - Name to be highlighted if it appears in the list.  Normally',10
  598.     Dc.B    '             the name of the current user online',10,10
  599.  
  600. _Template:    dc.b    'LF=LOGFILE/K,H=HIDE/K,HID=HIDEID/K/N,HF=HIDEFILE/K,M=MAX/K/N,T=TIMEONLINE/K/N,L=LOCALOFF/S,N=NOANSI/S,NT=NOTOTALS/S,USER/M',0
  601.  
  602. _Unregmsg:    dc.b    'Unregistered version. Delaying for 5 seconds.',10,10,0
  603. Break:    Dc.B    27,'[0m...BREAK',10,0
  604.  
  605. _ASCIILogo:    dc.b    '  +---------------------------+',10
  606.     dc.b    ' | C A L L E R S   V 3 . 0 1 |',10
  607.     dc.b    ' | (c) 1994 Eclipse Software | Reg: %s (%s) #%03ld',10
  608.     dc.b    ' +---------------------------+',10,10,0
  609.  
  610. _ANSILogo:    dc.b    '  ',27,'[1;33;44m C A L L E R S   V 3 . 0 1 ',27,'[0;37m',10
  611.     dc.b    ' ',27,'[1;36;44m (c) 1994 Eclipse Software ',27,'[0;37m Reg: %s (%s) #%03ld',27,'[0m',10,10,0
  612.  
  613. _ASCIITable:    dc.b    ' |========|=========|===========================|=======|=====|=====|====|====|',10
  614.     dc.b    ' | Date   | Time    | Alias                     | Speed | Min | Msg | UL | DL |',10
  615.     dc.b    ' |--------|---------|---------------------------|-------|-----|-----|----|----|',10,0
  616.  
  617. _ANSITable:    dc.b    27,'[1;34m ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÑÍÍÍÍ»',10
  618.     dc.b    27,'[1;34m º ',27,'[37mDate   ',27,'[34m³ ',27,'[37mTime    ',27,'[34m³ ',27,'[37mAlias                     ',27,'[34m³ ',27,'[37mSpeed '
  619.     dc.b    27,'[34mº ',27,'[37mMin ',27,'[34m³ ',27,'[37mMsg ',27,'[34m³ ',27,'[37mUL ',27,'[34m³ ',27,'[37mDL ',27,'[34mº',10
  620.     dc.b    27,'[1;34m ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ×ÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÅÄÄÄĶ',10,0
  621.  
  622. _ASCIILine:    dc.b    ' | %-6.6s | %7.7s | %-25.25s | %5.5s | %3.3ld | %3.3ld | %2.2ld | %2.2ld |',10,0
  623. _ASCIIHLine:    dc.b    ' | %-6.6s | %7.7s |[%-25.25s]| %5.5s | %3.3ld | %3.3ld | %2.2ld | %2.2ld |',10,0
  624. _ANSILine:    dc.b    27,'[1;34m º ',27,'[0;35m%-6.6s ',27,'[1;34m³ ',27,'[35m%7.7s ',27,'[34m³ ',27,'[33m%-25.25s ',27,'[34m³ ',27,'[32m%5.5s ',27,'[34mº '
  625.     dc.b    27,'[0;36m%3.3ld ',27,'[1;34m³ ',27,'[0;31m%3.3ld ',27,'[1;34m³ ',27,'[31m%2.2ld ',27,'[34m³ ',27,'[31m%2.2ld ',27,'[34mº',10,0
  626. _ANSIHLine:    dc.b    27,'[1;34m º ',27,'[0;35m%-6.6s ',27,'[1;34m³ ',27,'[35m%7.7s ',27,'[34m³',27,'[33;41m %-25.25s ',27,'[34;40m³ ',27,'[32m%5.5s '
  627.     dc.b    27,'[34mº ',27,'[0;36m%3.3ld ',27,'[1;34m³ ',27,'[0;31m%3.3ld ',27,'[1;34m³ ',27,'[31m%2.2ld ',27,'[34m³ ',27,'[31m%2.2ld ',27,'[34mº',10,0
  628.  
  629. _ASCIINTTail:    dc.b    ' |========|=========|===========================|=======|=====|=====|====|====|',10,0
  630.  
  631. _ASCIITail:    dc.b    ' |========|=========|===========================|=======|=====|=====|====|====|',10
  632.     dc.b    '                                                        | %3.3ld | %3.3ld | %2.2ld | %2.2ld |',10
  633.     dc.b    '                                                        |=====================|',10,0
  634.  
  635. _ANSINTTail:    dc.b    27,'[1;34m ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÏÍÍÍͼ',27,'[0;37m',10,0
  636.  
  637. _ANSITail:    dc.b    27,'[1;34m ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÎÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍØÍÍÍ͹',27,'[0;37m',10
  638.     dc.b    27,'[1;34m                                                        º',27,'[0;36m %3.3ld ',27,'[1;34m³',27,'[0;31m %3.3ld ',27,'[1;34m³',27,'[31m %2.2ld ',27,'[34m³',27,'[31m %2.2ld ',27,'[34mº',27,'[0;37m',10
  639.     dc.b    27,'[1;34m                                                        ÈÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÏÍÍÍͼ',27,'[0;37m',10,0
  640. _KeyOK:    dc.b    -1
  641. _BBS:    dc.b    'Unregistered',0
  642.     ds.b    40-(*-_BBS)
  643. _Separator:    dc.b    '\q1------',0
  644. FindBaud:    dc.b    'Login: ',0
  645. FindDate:    dc.b    '   <',0
  646. FindAlias:    dc.b    'User: ',0
  647. FindTimeon:    dc.b    ' elapsed)',0
  648. FindDownload:    dc.b    'Download: ',0
  649. FindUpload:    dc.b    'Upload  : ',0
  650. FindPosts:    dc.b    ' message ',0
  651. FindID:    dc.b    ' ID#: ',0
  652. SysopLogin:    dc.b    'SysOp Login',0
  653. LocalLogin:    dc.b    'Local Login',0
  654. LocalBaud:    dc.b    'LOCAL',0
  655.     even
  656.  
  657. _Vartable:    dc.l    _Calldate
  658.     dc.l    _Calltime
  659.     dc.l    _Alias
  660. _Baud:    dc.l    _Baudrate
  661. _Timeon:    dc.l    0
  662. _Posts:    dc.l    0
  663. _Uploads:    dc.l    0
  664. _Downloads:    dc.l    0
  665.     dc.l    0
  666.  
  667. _Logotable:    dc.l    _Sysop
  668.     dc.l    _BBS
  669. _Serial:    dc.l    0
  670.     dc.l    0
  671.  
  672. *******************************************************************************
  673.     Section    CallersBSS,BSS
  674. _DOSBase:    ds.l    1
  675. _EXECBase:    ds.l    1
  676. _File:    ds.l    1
  677.  
  678. _Keybuffer:    ds.b    96
  679. _Strbuffer:    ds.b    200
  680. _FileName:    ds.b    130
  681.  
  682. _MyArgs:
  683. _LogFile:    ds.l    1
  684. _Hide:    ds.l    1
  685. _HideID:    ds.l    1
  686. _Hidefile:    ds.l    1
  687. _Max:    ds.l    1
  688. _Timeonline:    ds.l    1
  689. _Localoff:    ds.l    1
  690. _Noansi:    ds.l    1
  691. _Nototals:    ds.l    1
  692. _User:    ds.l    2
  693.  
  694. _Sysop:    ds.b    40
  695. _ID:    ds.b    12
  696.  
  697. _RdArgs:    ds.l    1
  698.  
  699. _Calldate:    ds.b    8
  700. _Calltime:    ds.b    8
  701. _Alias:    ds.b    26
  702. _HideAliasBuf:    ds.b    28
  703. _Baudrate:    ds.b    6
  704.  
  705. _TotalTime:    Ds.L    1
  706. _TotalPosts:    Ds.L    1
  707. _TotalUpload:    Ds.L    1
  708. _TotalDownload:    Ds.L    2
  709.  
  710. _Length:    ds.l    1
  711. _Memptr:    ds.l    1
  712. _Offsets:    ds.l    1
  713. _Endoftable:    ds.l    1
  714. _MaxEntries:    ds.l    1
  715. _Entries:    ds.l    1
  716. _LogEntries:    ds.l    1
  717. _UserID:    ds.l    1
  718.  
  719. _HFile:    ds.l    1
  720. _HFileStart:    ds.l    1
  721. _HFileSize:    ds.l    1
  722.  
  723. _CustomRDArgs:    Ds.B    RDA_SIZEOF
  724. _SystemData:    Ds.B    exsd_SIZE
  725.     END
  726.  
  727.  
  728. Program History:
  729. V3.00 (12/7/94) RDR     Done
  730.       (13/7/94) DRD     Fixed & Finished
  731.                         Added TIMEONLINE function
  732.                         Added CTRL_C abort function
  733.       (14/7/94) DRD     Added keyfile protection routines back in
  734.                         Added Extended help for commandline
  735.                         Added Totals for Time, Msgs's, Uploads & Downloads
  736.                         Added HIDEID option to hide users via their UserID's
  737.                         Added HIDEFILE option to hide a list of users
  738.                         Added NOTOTALS option to remove totals at bottom of list
  739. V3.01 (10/8/94) DRD     Added LOGFILE option, to specify the logfile to read
  740.                         Added use of SystemData file
  741.